#pragma once

namespace Alice
{
    class Scene;
    class PrimitiveComponent;
    class World;
    /**
     * An interface to the private scene manager implementation of a scene.  Use GetRendererModule().AllocateScene to create.
     * The scene
     */
    class SceneInterface
    {
    public:
        virtual void AddPrimitive(PrimitiveComponent*inPrimitiveComponent) = 0;
        /**
         * Get the optional UWorld that is associated with this scene
         * 
         * @return UWorld instance used by this scene
         */
        virtual World* GetWorld() const = 0;
        /**
         * Return the scene to be used for rendering. Note that this can return null if rendering has
         * been disabled!
         */
        virtual Scene* GetRenderScene() = 0;
        virtual const Scene* GetRenderScene() const = 0;
    };
}